Groovy用のSublimeSocketのfilter書いた


概要

以前Ruby用のSublimeSocketフィルタを書いたのだけど、

それのGroovy用を、#yokohamagroovy で書いた。

https://github.com/sassembla/SublimeSocket3/tree/master/samples/groovySample



内容

保存するとGroovyのファイルを動かす。

ファイル保存後、非同期でファイルを実行する。


実行時にエラーが出れば表示を行う。

スクリーンショット 2014-03-16 15.24.37.png



セットアップ

・Groovy入っている


・SublimeSocket3をST3のpackageに入れる


・sample/groovySample フォルダを適当にどこかにコピー


・groovyFilter.txt 内のパスを変更(runShellとstartTailing)

https://github.com/sassembla/SublimeSocket3/blob/master/samples/groovySample/groovyFilter.txt#L69


https://github.com/sassembla/SublimeSocket3/blob/master/samples/groovySample/groovyFilter.txt#L71


https://github.com/sassembla/SublimeSocket3/blob/master/samples/groovySample/groovyFilter.txt#L81


・CommandPalette > "SublimeSocket: run SushiJSON"

スクリーンショット 2014-03-13 12.58.41.png


・画面下のバーに入力窓がでるので、rubyFilter.txtのファイルパスを入れてエンター

どこか/groovyFilter.txt

これで、パスが合っていれば、以降hello.groovyを保存するごとに実行され、

エラーがあれば表示される。



今回捕獲したエラー

とりあえずク構文まわりだけカバーした。


typoとかでへんなとこにdefが来たり、

コンストラクタをtypoしたりすると下記みたいなエラーが出るので、


Method definition not expected here. Please define the method at an appropriate place or perhaps try using a block/Closure instead. at line: 8 column: 2. File: /Users/highvision/Desktop/groovySample/hello.groovy @ line 8, column 2.


とかが発生したら、原因箇所をこれでもかと赤く囲む。



やらなかった事

groovyさんはかなり頭がよく、

例えばメソッド名typoしちゃったりすると、

groovy.lang.MissingMethodException: No signature of method: Greet.sayHello() is applicable for argument types: () values: []

    at Greet.salute(hello.groovy:15)


というエラーとともに、

Possible solutions: salutde(), split(groovy.lang.Closure), asType(java.lang.Class), wait(), wait(long), use([Ljava.lang.Object;)


とか出してくれるので、関連性がログから拾えれば

quickFix とかも組み合わせで出せるなーと思ったんだけど、


まあデモだし。(逃げた)